package pe.gob.osce.sirenas.dao.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import pe.gob.osce.sirenas.dao.MateriaControversiaDAOLocal;
import pe.gob.osce.sirenas.dao.convert.MateriaControversiaConvert;
import pe.gob.osce.sirenas.model.AcreditacionDTO;
import pe.gob.osce.sirenas.model.MateriaControversiaDTO;
import pe.gob.osce.sirenas.model.jpa.MateriaControversia;
import pe.gob.osce.sirenas.util.ConstanteEJB;
import pe.gob.osce.sirenas.util.ModeloException;



@Stateless
public class MateriaControversiaDAOImpl implements MateriaControversiaDAOLocal {

	@PersistenceContext(unitName="pe.gob.osce.sirenas.be.pu" )
	private	EntityManager	em;
	ResourceBundle propSirenas = ResourceBundle.getBundle(ConstanteEJB.PROPERTIES);

	@Override 
	public List<MateriaControversiaDTO>  listarMateriaControversia()	throws Exception {

		List<MateriaControversiaDTO> listMateriaControversiaDTO=null;
		//FichaArbitral fichaArbitralJPA=null;
		List<MateriaControversia> listaMateriaControversiaJPA=null;
		try{
			StringBuilder  	jpql= new StringBuilder();
			
			
			jpql.append("SELECT ma FROM MateriaControversia ma");
		
			Query	query= em.createQuery( jpql.toString() );
			List<MateriaControversia>	listaObjeto= query.getResultList();
			if(!listaObjeto.isEmpty()) {
				listaMateriaControversiaJPA=new ArrayList<MateriaControversia>();
				for (MateriaControversia obj: listaObjeto) {					
					listaMateriaControversiaJPA.add(obj);
				}
				listMateriaControversiaDTO=MateriaControversiaConvert.createListaMateriaControversiaDTO(listaMateriaControversiaJPA);
			}
			
		} catch (NoResultException nre) {
			listMateriaControversiaDTO=null;
			 throw new ModeloException(propSirenas.getString(ConstanteEJB.EXC_MODELO_NO_DATA));
		}catch (Exception e) {
			throw new ModeloException(propSirenas.getString(ConstanteEJB.EXC_MODELO_GENERAL_DB), e);
		}
		return listMateriaControversiaDTO;
	}
	
}
